home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / SCRPMGR.MOD < prev    next >
Encoding:
Modula Implementation  |  1993-11-06  |  3.6 KB  |  174 lines

  1. IMPLEMENTATION MODULE ScrpMgr;
  2.  
  3. (*
  4. AES Scrap Manager.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM AES     IMPORT IntOut,Addr,crystal,Version;
  12. #ifdef MM2
  13. FROM SYSTEM  IMPORT ADR,CADR;
  14. #else
  15. FROM SYSTEM  IMPORT ADR;
  16. #endif
  17. #if ST
  18. #if use_POSIX
  19. FROM types   IMPORT DIRSEP,PathName;
  20. FROM POSIX1  IMPORT access,fOK,unlink;
  21. FROM pSTRING IMPORT SLEN,APPEND,CONCAT;
  22. #endif
  23. #endif
  24.  
  25. AES_SYSTEM_IMPORT
  26.  
  27. #if Seimet
  28. CONST F80 = 050000101H;
  29.       F81 = 051000101H;
  30.       F82 = 052000100H;
  31. #endif
  32.  
  33. #if ST
  34. TYPE ScrapTypes = ARRAY Scraps OF ARRAY[0..9] OF CHAR;
  35. #if (constructor || ISOM2)
  36. CONST Types = ScrapTypes{"scrap.csv",
  37.                          "scrap.txt",
  38.                          "scrap.gem",
  39.                          "scrap.img",
  40.                          "scrap.dca",
  41.                          "scrap.dif",
  42.                          "scrap.asc",
  43.                          "scrap.rtf",
  44.                          "scrap.1wp",
  45.                          "scrap.wp",
  46.                          "scrap.tif",
  47.                          "scrap.iff",
  48.                          "scrap.eps",
  49.                          "scrap.cvg",
  50.                          "scrap.rsv",
  51.                          "scrap.usr"};
  52. #else
  53. VAR Types: ScrapTypes;
  54. #endif
  55. #endif
  56.  
  57. PROCEDURE ScrpRead(VAR Path: ARRAY OF CHAR): Scrap;
  58. #if ST
  59. #if use_POSIX
  60. VAR c   : Scraps;
  61.     s   : Scrap;
  62.     scrp: PathName;
  63. #endif
  64. #endif
  65. BEGIN
  66.   Path[0]:= 0C;
  67.   Addr[0]:= ADR(Path);
  68.   crystal(80,0,1,1);
  69. #if ST
  70.   IF (Version() = 0220H) OR (Version() = 1042H) OR (Version() = 0399H) THEN
  71. #else
  72.   IF Version() >= 0220H THEN (* GEM 2.x, GEM 3.x *)
  73. #endif
  74.     RETURN CAST(Scrap,IntOut[0]);
  75.   ELSE
  76.     (* read directory and set WORDSET *)
  77.     IF Path[0] # 0C THEN
  78. #if ST
  79. #if use_POSIX
  80. #warning ...using POSIX calls
  81.       IF Path[SLEN(Path) - 1] # DIRSEP THEN
  82.         APPEND(DIRSEP,Path);
  83.       END;
  84.       s:= Scrap{};
  85.       FOR c:= ScCSV TO ScUSR DO
  86.         CONCAT(Path,Types[c],scrp);
  87.         IF access(scrp,fOK) = 0 THEN
  88.           INCL(s,c);
  89.         END;
  90.       END;
  91.       RETURN s;
  92. #else
  93.       ;
  94. #endif
  95. #endif
  96.     ELSE
  97.       RETURN NoScrap;
  98.     END;
  99.   END;
  100. END ScrpRead;
  101.  
  102. PROCEDURE ScrpWrite(REF Path: ARRAY OF CHAR);
  103. BEGIN
  104. #ifdef MM2
  105.   Addr[0]:= CADR(Path);
  106. #else
  107.   Addr[0]:= ADR(Path);
  108. #endif
  109.   crystal(81,0,1,1);
  110. END ScrpWrite;
  111.  
  112. PROCEDURE ScrpClear;
  113. #if ST
  114. #if use_POSIX
  115. VAR i   : INTEGER;
  116.     c   : Scraps;
  117.     s   : Scrap;
  118.     dir : PathName;
  119.     scrp: PathName;
  120. #endif
  121. #endif
  122. BEGIN
  123. #if ST
  124.   IF (Version() = 0220H) OR (Version() = 1042H) OR (Version() = 0399H) THEN
  125. #else
  126.   IF Version() >= 0220H THEN (* GEM 2.x, GEM 3.x *)
  127. #endif
  128.     crystal(82,0,1,0);
  129.   ELSE
  130.     (* clear directory *)
  131. #if ST
  132. #if use_POSIX
  133. #warning ...using POSIX calls
  134.     s:= ScrpRead(dir);
  135.  
  136.     IF s # NoScrap THEN
  137.       IF dir[SLEN(dir) - 1] # DIRSEP THEN
  138.         APPEND(DIRSEP,dir);
  139.       END;
  140.       FOR c:= ScCSV TO ScUSR DO
  141.         CONCAT(dir,Types[c],scrp);
  142.         i:= unlink(scrp);
  143.       END;
  144.     END;
  145. #else
  146.     ;
  147. #endif
  148. #endif
  149.   END;
  150. END ScrpClear;
  151.  
  152. #if ST
  153. #if not (constructor || ISOM2)
  154. BEGIN
  155.   Types[ScCSV]:= "scrap.csv";
  156.   Types[ScTXT]:= "scrap.txt";
  157.   Types[ScGEM]:= "scrap.gem";
  158.   Types[ScIMG]:= "scrap.img";
  159.   Types[ScDCA]:= "scrap.dca";
  160.   Types[ScDIF]:= "scrap.dif";
  161.   Types[ScASC]:= "scrap.asc";
  162.   Types[ScRTF]:= "scrap.rtf";
  163.   Types[Sc1WP]:= "scrap.1wp";
  164.   Types[ScWP]:= "scrap.wp";
  165.   Types[ScTIF]:= "scrap.tif";
  166.   Types[ScIFF]:= "scrap.iff";
  167.   Types[ScEPS]:= "scrap.eps";
  168.   Types[ScCVG]:= "scrap.cvg";
  169.   Types[Sc14]:= "scrap.rsv";
  170.   Types[ScUSR]:= "scrap.usr";
  171. #endif
  172. #endif
  173. END ScrpMgr.
  174.